from typing import Dict
from .tts_registry import tts_registry

# 缓存已创建的实例
_tts_instances: Dict[str, object] = {}

def get_or_create_tts_instance(tts_type_name: str = None, reuse_existing: bool = True): # type: ignore
    """
    获取 TTS 实例（带缓存，避免重复加载模型）
    tts_type_name: TTS 类型名称
    reuse_existing: 是否重用已存在的实例
    这个函数可以被API调用。
    """
    # 如果已存在，直接返回
    if reuse_existing and tts_type_name in _tts_instances:
        return _tts_instances[tts_type_name]    
    # 否则创建并缓存
    cls = tts_registry.get(tts_type_name)
    if cls is None:
        print(f"[TTS] 未找到类型为 '{tts_type_name}' 的 TTS 类")
        return None

    old_instance = _tts_instances.get(tts_type_name)
    if hasattr(old_instance, "cleanup"):
        old_instance.cleanup() # type: ignore

    print(f"[TTS] 正在创建新实例: {tts_type_name}")
    instance = cls()
    _tts_instances[tts_type_name] = instance  # 缓存
    return instance

def get_available_tts_list():
    """
    获取所有已注册的TTS服务列表。
    这个函数可以被API调用。
    """
    return list(tts_registry.keys())